Block based power management

ABSTRACT

A system and method is disclosed for efficiently managing power distribution among the various functional blocks used within portable electronic devices. The method includes allowing each functional block to be independently controlled, containing its own low-level software and power controls for setting the local power state of the functional block. For each power control domain in the implementation, hardware uses these local power states and sets the actual operating state of the power control domain accordingly.

BACKGROUND OF THE INVENTION

1. Field Of The Invention

The present invention relates generally to the power management ofportable electronic devices and, more specifically, to a system andmethod for efficiently managing power distribution among the variousfunctional blocks used within portable electronic devices.

2. Description Of The Related Art

This section is intended to introduce the reader to various aspects ofart that may be related to various aspects of the present invention,which are described and/or claimed below. This discussion is believed tobe helpful in providing the reader with background information tofacilitate a better understanding of the various aspects of the presentinvention. Accordingly, it should be understood that these statementsare to be read in this light, and not as admissions of prior art.

Portable electronic devices, such as mp3 players, cellular phones,portable video devices, personal data organizers, and portable laptopcomputers, for example, are continually providing more features,functions and/or storage capacity despite the fact that the devices aredecreasing in size and becoming more portable. Many of these devices areable to achieve the increase in functionality and decreased size thanksto engineering breakthroughs with respect to integrated circuits whichmake up the electronic devices. Specifically, the integrated circuitsare able to be more densely populated with the circuits that operate inthe electronic device. Additionally, more efficient techniques forutilizing existing and/or future hardware and software are beingdeveloped to allow for increased functionality.

Due in part to these increases in functionality coupled with decreasesin size, a common concern with portable electronic devices is powermanagement. In particular, increased functionality typically results inincreased power requirements. However, since the devices are generallygetting smaller, less room is available for portable batteries withinthe devices. Therefore, a common problem is insufficient battery life.In addition, increased power requirements may lead to increasedtemperatures within the devices. Other than advanced thermal dissipationtechniques, the best way to address this problem is through efficientpower management for the device.

However, many known techniques for minimizing power consumption inportable electronic devices can lead to other problems, such asimproperly managing common system resources. This is partially due tothe fact that power distribution among various components in portableelectronic devices is often managed through low-level software. Thissoftware is responsible for not only ascertaining the power requirementsof the individual components but also for knowing when components areassociated with common resources, like a clock/power system. Afundamental problem with this technique is that these associations areactually based on the physical interconnections of hardware within thedevice. Therefore, maintaining these associations within low-levelsoftware can be cumbersome from a software design standpoint, resultingin inefficiency from a power management standpoint.

SUMMARY

Certain aspects of embodiments disclosed herein by way of example aresummarized below. It should be understood that these aspects arepresented merely to provide the reader with a brief summary of certainforms an invention disclosed and/or claimed herein might take and thatthese aspects are not intended to limit the scope of any inventiondisclosed and/or claimed herein. Indeed, any invention disclosed and/orclaimed herein may encompass a variety of aspects that may not be setforth below.

An electronic device utilizing power control management through hardwareis provided. The electronic device may contain multiple functionalblocks distributed between multiple power control domains. Eachfunctional block may include its own power controls and low-levelsoftware for setting a local power state for the functional block. Forexample, each functional block may have a device driver for determiningthe power state required by the functional block. However, the actualoperating power state for each power control domain may be set usingonly hardware. For example, the low-level software for each functionalblock may set a value within a physical power control registerassociated with the functional block. These physical power controlregisters may automatically update an arrangement of logical gateswhich, in turn, may be used to automatically set the operating powerstate for the associated power control domain. Therefore, the powersupplied to the power control domains may be controlled entirely byhardware as opposed to software. By moving these power managementfunctions from software to hardware, the electronic device may avoidseveral of the power management drawbacks known in the prior art, suchas the incorrect setting of power states, the necessity of managingphysical coupling relationships within software, and so forth.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other features, aspects, and advantages of the presentdisclosure may become better understood when the following detaileddescription of certain exemplary embodiments is read with reference tothe accompanying drawings in which like characters represent like partsthroughout the drawings, wherein:

FIG. 1 is a perspective view illustrating an example of an electronicdevice, such as a portable media player, in accordance with oneembodiment of the present disclosure;

FIG. 2 is a simplified block diagram of the electronic device of FIG. 1in accordance with one embodiment of the present disclosure;

FIGS. 3A & 3B are block diagrams illustrating problems associated withpower distribution techniques known in the prior art;

FIG. 4 is a diagram illustrating a system associated with powerdistribution techniques known in the prior art;

FIG. 5 is a flow chart of a method for updating power states associatedwith power distribution techniques known in the prior art;

FIG. 6 is a block diagram depicting a hierarchy of components inaccordance with an embodiment of the present disclosure;

FIG. 7 is a diagram illustrating a system in accordance with anembodiment of the present disclosure;

FIGS. 8A & 8B are diagrams illustrating a system in accordance withembodiments of the present disclosure; and

FIG. 9 is a flow chart of a method for updating power states in thesystem in accordance with one example of an embodiment of the presentdisclosure.

DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS

One or more specific embodiments of the present invention will bedescribed below. These described embodiments are only exemplary of thepresent invention. Additionally, in an effort to provide a concisedescription of these exemplary embodiments, all features of an actualimplementation may not be described in the specification. It should beappreciated that in the development of any such actual implementation,as in any engineering or design project, numerousimplementation-specific decisions must be made to achieve thedevelopers' specific goals, such as compliance with system-related andbusiness-related constraints, which may vary from one implementation toanother. Moreover, it should be appreciated that such a developmenteffort might be complex and time consuming, but would nevertheless be aroutine undertaking of design, fabrication, and manufacture for those ofordinary skill having the benefit of this disclosure.

An exemplary electronic device 10 is illustrated in FIG. 1 in accordancewith one embodiment of the present technique. In some embodiments,including the presently illustrated embodiment, device 10 may be aportable electronic device, such as a media player, a cellular phone, apersonal data organizer, or the like. Indeed, in such embodiments, aportable electronic device may include a combination of thefunctionalities of such devices. In addition, electronic device 10 mayallow a user to connect to and communicate through the Internet orthrough other networks, such as local or wide area networks. Forexample, electronic device 10 may allow a user to access the internetand to communicate using e-mail, text messaging, instant messaging, orusing other forms of electronic communication. By way of example,electronic device 10 may be a model of an iPod® having a display screenor an iPhone® available from Apple Inc.

In certain embodiments, electronic device 10 may be powered by one ormore rechargeable and/or replaceable batteries. Such embodiments may behighly portable, allowing a user to carry electronic device 10 whiletraveling, working, exercising, and so forth. In this manner, anddepending on the functionalities provided by electronic device 10, auser may listen to music, play games or video, record video or takepictures, place and receive telephone calls, communicate with others,control other devices (e.g., via remote control and/or Bluetoothfunctionality), and so forth while moving freely with electronic device10. In addition, electronic device 10 may be sized such that it fitsrelatively easily into a pocket or a hand of the user. While certainembodiments of the present disclosure are described with respect to aportable electronic device, it should be noted that the presentlydisclosed techniques may be applicable to a wide array of otherelectronic devices and systems.

In the presently illustrated embodiment, exemplary device 10 may includean enclosure or housing 12, a display 14, user input structures 16, andinput/output connectors 18. Enclosure 12 may be formed from plastic,metal, composite materials, or other suitable materials, or anycombination thereof. Enclosure 12 may protect the interior components ofelectronic device 10 from physical damage, and may also shield theinterior components from electromagnetic interference (EMI).

Display 14 may be a liquid crystal display (LCD), a light emitting diode(LED) based display, an organic light emitting diode (OLED) baseddisplay, or some other suitable display. In accordance with certainembodiments of the present technique, display 14 may display a userinterface and various other images, such as logos, avatars, photos,album art, and the like. Additionally, in one embodiment, display 14 mayinclude a touch screen through which a user may interact with the userinterface. The display may also include various function and/or systemindicators to provide feedback to a user, such as power status, callstatus, memory status, or the like. These indicators may be incorporatedinto the user interface displayed on display 14.

In one embodiment, one or more of the user input structures 16 may beconfigured to control electronic device 10, such as by controlling amode of operation, an output level, an output type, etc. For example,user input structures 16 may include a button to turn electronic device10 on or off. Further user input structures 16 may allow a user tointeract with the user interface on display 14. Embodiments ofelectronic device 10 may include any number of user input structures 16,including buttons, switches, a control pad, a scroll wheel, or any othersuitable input structures. User input structures 16 may work with theuser interface displayed on electronic device 10 to control functions ofelectronic device 10 and/or any interfaces or devices connected to orused by electronic device 10. For example, user input structures 16 mayallow a user to navigate a displayed user interface or to return such adisplayed user interface to a default or home screen.

Exemplary electronic device 10 may also include various input and outputports 18 to allow connection of additional devices. For example, port 18may be a headphone jack that provides for the connection of headphones.Additionally, port 18 may have both input/output capabilities to providefor connection of a headset (e.g., a headphone and microphonecombination). Embodiments of the present technique may include anynumber of input and/or output ports, such as headphone and headsetjacks, universal serial bus (USB) ports, IEEE-1394 ports, and AC and/orDC power connectors. Further, electronic device 10 may use the input andoutput ports 18 to connect to and send or receive data with any otherdevice, such as other portable electronic devices, personal computers,printers, or the like. For example, in one embodiment, electronic device10 may connect to a personal computer via an IEEE-1394 connection tosend and receive data files, such as media files.

Additional details of illustrative electronic device 10 may be betterunderstood through reference to FIG. 2, which is a block diagramillustrating various components and features of electronic device 10 inaccordance with one embodiment. In the presently illustrated embodiment,electronic device 10 may include display 14 and I/O ports 18 discussedabove. In addition, as discussed in greater detail below, exemplaryelectronic device 10 may include a user interface 20, one or moreprocessors 22, a memory device 24, a non-volatile storage 26, cardinterface(s) 28, a networking device 30, and a power source 32.

As discussed further herein, user interface 20 may be displayed ondisplay 14, and may provide a means for a user to interact withelectronic device 10. User interface 20 may be a textual user interface,a graphical user interface (GUI), or any combination thereof, and mayinclude various layers, windows, screens, templates, elements, or othercomponents that may be displayed in all or in part of display 14. Userinterface 20 may, in certain embodiments, allow a user to interface withdisplayed interface elements via one or more user input structures 16and/or via a touch sensitive implementation of display 14. In suchembodiments, the user interface may provide interactive functionality,allowing a user to select, by touch screen or other input structure,from among options displayed on display 14. Thus the user can operateelectronic device 10 by appropriate interaction with user interface 20.

Processor(s) 22 may provide the processing capability needed to executethe operating system, programs, user interface 20, and any otherfunctions of electronic device 10. Processor(s) 22 may include one ormore microprocessors, such as one or more “general-purpose”microprocessors, one or more special-purpose microprocessors and/orASICS, or some combination thereof. For example, processor 22 mayinclude one or more reduced instruction set (RISC) processors, as wellas graphics processors, video processors, and/or related chip sets.

As noted above, embodiments of electronic device 10 may also includememory 24. Memory 24 may include a volatile memory, such as randomaccess memory (RAM), and/or a non-volatile memory, such as read-onlymemory (ROM). Memory 24 may store a variety of information and may beused for various purposes. For example, memory 24 may store the firmwarefor electronic device 10, such as an operating system, other programsthat enable various functions of electronic device 10, user interfacefunctions, processor functions, and may be used for buffering or cachingduring operation of electronic device 10.

Non-volatile storage 26 of electronic device 10 of the presentlyillustrated embodiment may include ROM, flash memory, a hard drive, orany other suitable optical, magnetic, or solid-state storage medium, ora combination thereof. Storage 26 may store data files such as media(e.g., music and video files), software (e.g., for implementingfunctions on electronic device 10), preference information (e.g., mediaplayback preferences), lifestyle information (e.g., food preferences),exercise information (e.g., information obtained by exercise monitoringequipment), transaction information (e.g., information such as creditcard information), wireless connection information (e.g., informationthat may enable electronic device 10 to establish a wireless connection,such as a telephone connection), subscription information (e.g.,information that maintains a record of podcasts, television shows, orother media to which a user subscribes), telephone information (e.g.,telephone numbers), and any other suitable data.

The embodiment illustrated in FIG. 2 may also include one or more cardslots 28. Card slots 28 may be configured to receive expansion cardsthat may be used to add functionality to electronic device 10, such asadditional memory, I/O functionality, or networking capability. Such anexpansion card may connect to the device through any type of suitableconnector, and may be accessed internally or external to housing 12. Forexample, in one embodiment, the card may be a flash memory card, such asa SecureDigital (SD) card, mini- or microSD, CompactFlash card,Multimedia card (MMC), or the like. Additionally, in an embodimentincluding mobile telephone functionality, card slots 28 may receive aSubscriber Identity Module (SIM) card.

Exemplary electronic device 10 depicted in FIG. 2 may also includenetwork device 30, such as a network controller or a network interfacecard (NIC). In one embodiment, network device 30 may be a wireless NICproviding wireless connectivity over any 802.11 standard or any othersuitable wireless networking standard. Network device 30 may allowelectronic device 10 to communicate over a network, such as a LAN, WAN,MAN, or the Internet. Further, electronic device 10 may connect to andsend or receive data with any device on the network, such as portableelectronic devices, personal computers, printers, and so forth. Forexample, in one embodiment, electronic device 10 may connect to apersonal computer via network device 30 to send and receive data files,such as media files. Alternatively, in some embodiments, the portableelectronic device may not include network device 30. In such anembodiment, a NIC may be added into card slot 28 to provide similarnetworking capability as described above.

Further, electronic device 10 may also include power source 32. In oneembodiment, power source 32 may be one or more batteries, such as aLi-Ion battery, may be user-removable or secured to housing 12, and mayor may not be rechargeable. Additionally, power source 32 may utilize ACpower, such as provided by an electrical outlet, and electronic device10 may be connected to power source 32 via I/O ports 18.

As discussed above, processor(s) 22, memory 24 and non-volatile storage26 may provide processing capability and long-term and short-termstorage that allow for a plurality of programs and functions to beexecuted by electronic device 10. These programs and functions mayinclude audio, video, and voice/chat subsystems as well as numerousother general purpose subsystems. The processing may be carried out byone or more microprocessors on one or more chip sets. Therefore,electronic device 10 may comprise a plurality of functional blocks ofassociated programs and/or functions. As will be appreciated, in someinstances a functional block may include related programs or functionswhile in other instances a functional block may include disparate orotherwise unrelated programs or functions.

At any given time, numerous, but not necessarily all, functional blocksmay be in use. As a simple example, the video, audio, and voice/chatsubsystems may be the only functional blocks active at any given time.In addition, each subsystem may have varying power needs. One way ofdealing with this situation may be to have low-level software thatserves as the device driver for a functional block to put the block intoa low-power state when the block is not being used and return the blockto a high-power state when the block is needed. The details of the “lowpower” and “high power” states may be device-specific but may typicallyinvolve some combination of clock speed (full speed, reduced speed, orstopped) and voltage to the functional block (max voltage, reducedvoltage, or zero voltage).

Although this technique works well in certain circumstances, it can alsopresent problems. For example, the functional blocks may be coupled insome way by the implementation. An example of this could be a group offunctional blocks 34 and 36 that share a clock system 38, a power system40, or both as illustrated in FIGS. 3A & 3B. If this type of sharingoccurs, the power control software must be aware of the coupling.Otherwise, several different types of problems may arise. For example,as illustrated in FIG. 3A, the power control software could put firstfunctional block 34 into a low-power state because it is not being usedand, as a side effect, also put second functional block 36 into alow-power state when second functional block 36 is actively being used.This may adversely affect the functionality of second functional block36 because second functional block 36 might have no power to accomplishthe functions that were currently being performed. Conversely, asillustrated in FIG. 3B, the power control software could possibly leaveboth functional blocks 34 and 36 in a high-power state merely becausesecond functional block 36 is being used. This may lead to more powerbeing used than necessary because the first functional block might bereceiving power even though no functions were currently being performed.

FIG. 4 more particularly illustrates this problem situation. As shown,first and second functional blocks 34, 36 may be situated within a powercontrol domain 42. Within power control domain 42, a power controlswitch 44 may be used to toggle the power on or off for power controldomain 42. This toggling may be carried out by a physical power controlregister 46 which can, for example, have a binary bit set to a 1 or 0based on whether the power is to be on or off for power control domain42. As discussed above, in this type of configuration, software may beused to control the toggling of power control switch 44 for powercontrol domain 42. For example, a device driver 48 for first functionalblock 34 and a device driver 50 for second functional block 36 may bothset the power control state of their respective functional blocks.Device drivers 48, 50 may accomplish this by executing softwarefunctions which communicate with power control software 52. Powercontrol software 52 may, in turn, update physical power control register46 by setting the appropriate binary bit to a 1 or 0 depending onwhether power control domain 42 currently requires power.

FIG. 5 illustrates a simplified flow diagram of a process 54 that may betaken to update the power states using power control software 52 withthis configuration. Device drivers 48, 50 for each functional block 34,36 may determine whether their respective functional block needs powerand call an appropriate function with power control software 52 (block56). If a call is made to turn the power on, power control software 52may determine whether physical power control register 46, and thereforepower control switch 44, is already currently set to an ON state forpower control domain 42 (block 58). If physical power control register46 is not already set to an ON state for power control domain 42, powercontrol software 52 may update the binary bit of physical power controlregister 46 relating to power control domain 42 to an ON state (block60). Otherwise, if physical power control register 46 is already set toan ON state for the power control domain 42, power control software 52may simply wait for another change in state to be initiated by either ofdevice drivers 48, 50 of functional blocks 34, 36 (block 62).

Conversely, if a call is made to turn the power off, power controlsoftware 52 may determine whether physical power control register 46,and therefore power control switch 44, is already currently set to anOFF state for power control domain 42 (block 64). If physical powercontrol register 46 is not already set to an OFF state, power controlsoftware 52 may update the binary bit of physical power control register46 relating to power control domain 42 to an OFF state (block 66).Otherwise, if physical power control register 46 is already set to anOFF state for power control domain 42, power control software 52 againmay simply wait for another change in state to be initiated by either ofdevice drivers 48, 50 of functional blocks 34, 36 (block 62).

In the configurations discussed above, only two functional blocks 34, 36are shown within each power control domain 42. However, those skilled inthe art will appreciate that each power control domain 42 may actuallycontain any number of functional blocks. As such, power control software52 may manage numerous functional blocks at any given time. The actualnumber of functional blocks managed by power control software 52 can bebased on device-specific implementations. Nevertheless, the software(e.g., functional block device drivers 48, 50 and power control software52) may be required to keep track of the coupling relationships betweenthe functional blocks in order to adequately manage the powerrequirements of all the functional blocks within each power controldomain 42.

The coupling between the functional blocks may be difficult for powercontrol software to manage for several reasons. For example, thecoupling may usually be related to power control device-specificimplementation issues. Therefore, requiring the power control softwareto manage these couplings may necessitate updating the software with thedevice-specific intricacies every time a new design is implemented.Furthermore, managing the couplings with the power control software mayscatter the implementation-specific software code across several powercontrol parts of the device's software. This may further exacerbate theproblem of adequately organizing the implementation-specific intricaciesfor each device.

These problems may be addressed by the presently disclosed techniques byeliminating the need for power control software to manage these couplingassociations, as illustrated by FIG. 6. In the depicted embodiment, eachfunctional block 68 may be independently controlled and contain aprivate set of power controls 70. In this embodiment, low-level software72 may manipulate power controls 70 based on the local state offunctional block 68. For each power control domain 74 in one suchembodiment, hardware 76 may monitor power controls 70 of all offunctional blocks 68 in power control domain 74 and may set the actualoperating state of power control domain 74 to the lowest state allowedby functional blocks 68 in power control domain 74. For example, in oneembodiment, hardware 76 may be configured based on how functional blocks68 are distributed over power control domain 74 and, thus, may properlyimplement power management of power control domain 74. Hardware 76 mayconsist of an arrangement of OR, AND, NOR, and NAND gates or any othertype of hardware logic gates. In addition, as will be appreciated bythose skilled in the art, in different embodiments one or more powercontrol domains 74 may be present.

FIG. 7 more particularly illustrates an exemplary embodiment of thepresent disclosure. As shown, a first and second functional block 78, 80may be situated within a power control domain 82. Within power controldomain 82, a power control switch 84 may be used to toggle the power onor off for power control domain 82. However, in the illustratedembodiment, an OR gate 86 may be used to cause the power to be toggledon for power control domain 82 if either first or second functionalblocks 78, 80 need the power to be on. In the illustrated embodiment, afirst and second physical power control register 88, 90 may be used asinputs to OR gate 86. If either first physical power control register 88or second physical power control register 90 has a binary bit (e.g.,corresponding to the power requirements of their respective functionalblock) set to an appropriate value, OR gate 86 may automatically togglepower control switch 84 to an ON state. Therefore, in this embodiment,hardware (e.g., OR gate 86) may be used to control the toggling of powercontrol switch 84 for power control domain 82. A device driver 92 forfirst functional block 78 and a device driver 94 for second functionalblock 80 may both set the binary bit value for their respective physicalpower control registers 88, 90 based on whether their respectivefunctional blocks currently require power, without regard to each other.However, the actual toggling of power on and off for power controldomain 82 may be accomplished entirely through hardware (e.g., OR gate86 and physical power control registers 88, 90), as opposed to software.

Moreover, as functional blocks are moved from one power control domainto another, the physical hardware may be moved around accordingly basedon implementation-specific considerations, but the software associatedwith each functional block may remain unchanged using the presenttechniques. For example, FIG. 8A illustrates the embodiment describedabove in FIG. 7. However, in FIG. 8A, a third and fourth functionalblock 96, 98 have been added which may be situated within a second powercontrol domain 100. A second power control switch 102 may controlwhether power is on for second power control domain 100. In addition, asecond OR gate 104 may be used to cause the power to be on or off forsecond power control domain 100. As before, a third and fourth physicalpower control register 106,108 may be used as inputs to second OR gate104. If either third physical power control register 106 or fourthphysical power control register 108 has the appropriate binary bit set,second OR gate 104 may automatically toggle second power control switch102 to an ON state. In such an implementation, a device driver 110 forthird functional block 96 and a device driver 112 for fourth functionalblock 98 may set the appropriate binary bit value for their respectivephysical power control registers 106,108 based on whether theirrespective functional blocks currently require power, without regard foreach other. In fact, in one implementation, each of device drivers 92,94, 110, and 112 may work without regard to the status of any of thefunctional blocks and device drivers.

However, FIG. 8B illustrates what would happen if third functional block96 were moved from second power control domain 100 to first powercontrol domain 82. As illustrated, third physical power control register106 may be moved to be an input into first OR gate 86 which maydetermine whether first power control switch 84 is toggled to an ONstate. Thus, in this example, first power control switch 84, controllingthe flow of power to first power control domain 82, may be toggled to anON state if any of functional blocks 78, 80, or 96 need power and may betoggled to an OFF state if none of functional blocks 78, 80, and 96 needpower. In addition, since only one functional block 98 may be usedwithin second power control domain 100, there may no longer be a needfor second OR gate 104, whereas fourth physical power control register108 may directly control the toggling of second power control switch102. However, device driver 110 for third functional block 96 may remainthe same and may not need to be updated to take these hardware changesinto consideration.

With the foregoing hardware descriptions in mind, FIG. 9 illustrates aprocess 114 for updating the power states of functional blocks inaccordance with an embodiment of the present technique. Upon powering on(block 116) electronic device 10, hardware may initialize (block 118)the power state of all functional blocks to some default value, and thenmay initialize (block 120) the power state of each power control domainto the value implied by the power states of each of the functionalblocks and by the physical assignment of the functional blocks to thepower control domains. The number of power control domains andfunctional blocks within electronic device 10 may typically depend uponimplementation-specific hardware considerations.

In one embodiment, low-level software within each functional block maycontinually check (block 122) for changes in the power state of itsassociated functional block. Whenever a change in power state isindicated, the low-level software may update (block 124) the powermanagement control register based on these changed conditions. In oneembodiment, the power management control register may be ahardware-based register. Any time the low-level software updates (block124) the power management control register for some functional block,the hardware may automatically update (block 126) the actual operatingpower state of the power control domain to which the functional block isassigned.

The present techniques may address previous power coupling problems.First, since each functional block contains its own low-level softwareand power controls for independently controlling the local power stateof the functional block, the scenarios illustrated in FIGS. 3A & 3B maybe avoided. For example, in an exemplary embodiment, the low-levelsoftware may not inadvertently set the power state of one functionalblock based on the power state of another functional block. Further,using hardware to manage the coupling may cause the power statedecisions to be based on the actual physical associations of thehardware configuration. Thus, in a hardware implementation, allmanagement of this information at the software level may be eliminatedas may be the need to synchronize scattered information in the low-levelsoftware based on implementation-specific hardware configurations. Infact, there may be no need for software to have any knowledge of thephysical associations of hardware configurations.

Although the power controls of the functional blocks may operate in anymanner, in certain embodiments the power controls of the functionalblocks may have the same format and that format may be suitable fordetermining the lowest state allowed by the functional blocks. Forexample, if the power controls of all of the functional blocks in apower control domain are integers between 0 (the lowest state) and somemaximum value (the highest state), then the lowest state allowed for thepower control domain may be a simple MAX function of all the powercontrols of all of the functional blocks.

With the foregoing in mind, a more specific embodiment of the presenttechnique is discussed which encompasses the concept of run levels. A“run level” is an abstract notion of a point in the power/performancespace, ranging from the lowest possible power (power OFF) to the highestpossible power (power ON, clocks at full speed). Table 1 shows examplevalues for different run level power states. In one embodiment, softwaremay determine the desired run level of each functional block on a localbasis and may pass the result of this determination to hardware bysetting the run level field of the device power management controlregister.

TABLE 1 Example Run Level Power States 0000 OFF 0001-0011 Reserved forsemi-OFF states 0100 Powered, all clocks stopped 0101-1110 Reserved forsemi-stopped states 1111 Powered, all clocks at full speed

Such an implementation, based on which functional blocks are actually ineach clock and/or power partition, may evaluate the desired run level ofall of the functional blocks in the partition and may manage powersettings such that the clock and/or power system in the partition areset to the lowest allowable settings. In one embodiment, if animplementation has multiple functional blocks in a single clock and/orpower partition, then all of the functional blocks may have theirdesired run level set to a particular state before the clock and/orpower system in the partition is set to that state.

While the invention may be susceptible to various modifications andalternative forms, specific embodiments have been shown by way ofexample in the drawings and have been described in detail herein.However, it should be understood that the invention is not intended tobe limited to the particular forms disclosed. Rather, the invention isto cover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention as defined by the followingappended claims.

1. A system, comprising: a plurality of functional blocks, wherein eachfunctional block contains software configured to set the power state forthe functional block; at least one power control domain, wherein eachfunctional block is associated with a respective power control domain;and hardware configured to set the power state of each power controldomain based on the power states of the functional blocks within therespective power control domains.
 2. The system of claim 1, wherein thepower state of each power control domain is set to the highest powerstate required by the functional blocks within the respective powercontrol domain.
 3. The system of claim 1, wherein the power state of thefunctional blocks is an integer between a minimum power state and amaximum power state.
 4. The system of claim 1, wherein the power stateof the functional blocks is a function of performance required by thefunctional blocks.
 5. The system of claim 1, wherein the hardwareconsists of an arrangement of logic gates.
 6. A system, comprising: oneor more partitions, each partition comprising one or more functionalblocks, wherein each functional block has an associated run level thatis set by executable software routines; and hardware configured to setthe run level of each partition based on the run levels indicated by thefunctional blocks within the respective partitions.
 7. The system ofclaim 6, wherein a first partition is a clock partition.
 8. The systemof claim 6, wherein a first partition is a power partition.
 9. Thesystem of claim 6, wherein the run level for a given functional block isset based on a function of power and performance required by thefunctional block.
 10. The system of claim 6, wherein the hardwarecomprises a power management control register.
 11. An electronic device,comprising: a housing; a display disposed in the housing; a memorydisposed in the housing, the memory including executable applicationinstructions stored therein; a processor disposed in the housing andconfigured to execute the application instructions stored in the memory;at least one functional block comprising a device driver configured toset a local power state of the functional block; and hardware configuredto set at least one shared power state based on the local power statesof the at least one functional block.
 12. The electronic device of claim11, further comprising at least one power control domain wherein eachfunctional block is arranged within one of the power control domains.13. The electronic device of claim 12, wherein the shared power statesare operating power states of the power control domains.
 14. Theelectronic device of claim 13, wherein the shared power state of eachpower control domain is set based on the local power states of onlythose functional blocks arranged within the power control domain.
 15. Amethod for providing power to functional blocks, the method comprising:setting the power state for a plurality of functional blocks usingsoftware; and setting the power state for at least one power controldomain using hardware; wherein each of the functional blocks isassociated with a respective power control domain.
 16. The method ofclaim 15, wherein the power state for the power control domains is setbased on the power states for the plurality of functional blocksassociated with the respective power control domains.
 17. The method ofclaim 15, wherein each of the functional blocks is associated with itsown software.
 18. The method of claim 15, wherein the power state of thefunctional blocks is an integer between a minimum power state and amaximum power state.
 19. The method of claim 15, wherein the power stateof the functional blocks is a function of the performance required ofthe functional blocks.
 20. A method of manufacturing, comprising:providing an electronic device; providing software configured to set thelocal power state of at least one functional block used by theelectronic device; and providing hardware configured to set theoperating power state of at least one power control domain; wherein eachof the at least one functional blocks is associated with a respectivepower control domain.
 21. The method of claim 20, wherein eachfunctional block is associated with its own software configured to setthe local power state of the functional block.
 22. The method of claim20, wherein the hardware sets the operating power state of the powercontrol domains based on the local power states of the functionalblocks.
 23. The method of claim 20, wherein the hardware sets theoperating power state of the power control domains based on the localpower states of the functional blocks arranged within each respectivepower control domain.
 24. The method of claim 20, wherein the hardwareconsists of an arrangement of logic gates.